<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Blockly Demo: Toolbox</title>
  <script src="../../blockly_compressed.js"></script>
  <script src="../../blocks_compressed.js"></script>
  <script src="../../msg/js/en.js"></script>
  <style>
    body {
      background-color: #fff;
      font-family: sans-serif;
    }
    h1 {
      font-weight: normal;
      font-size: 140%;
    }
  </style>
</head>
<body>
  <h1><a href="https://developers.google.com/blockly/">Blockly</a> &gt;
    <a href="../index.html">Demos</a> &gt; Toolbox</h1>

  <p>This is a demo of a complex category structure for the toolbox.</p>

  <p>&rarr; More info on the <a href="https://developers.google.com/blockly/guides/configure/web/toolbox">Toolbox</a>&hellip;</p>

  <div id="blocklyDiv" style="height: 600px; width: 800px;"></div>

  <xml id="toolbox" style="display: none">
    <category name="Logic">
      <category name="If">
        <block type="controls_if"></block>
        <block type="controls_if">
          <mutation else="1"></mutation>
        </block>
        <block type="controls_if">
          <mutation elseif="1" else="1"></mutation>
        </block>
      </category>
      <category name="Boolean">
        <block type="logic_compare"></block>
        <block type="logic_operation"></block>
        <block type="logic_negate"></block>
        <block type="logic_boolean"></block>
        <block type="logic_null"></block>
        <block type="logic_ternary"></block>
      </category>
    </category>
    <category name="Loops">
      <block type="controls_repeat_ext">
        <value name="TIMES">
          <block type="math_number">
            <field name="NUM">10</field>
          </block>
        </value>
      </block>
      <block type="controls_whileUntil"></block>
      <block type="controls_for">
        <field name="VAR">i</field>
        <value name="FROM">
          <block type="math_number">
            <field name="NUM">1</field>
          </block>
        </value>
        <value name="TO">
          <block type="math_number">
            <field name="NUM">10</field>
          </block>
        </value>
        <value name="BY">
          <block type="math_number">
            <field name="NUM">1</field>
          </block>
        </value>
      </block>
      <block type="controls_forEach"></block>
      <block type="controls_flow_statements"></block>
    </category>
    <category name="Math">
      <block type="math_number"></block>
      <block type="math_arithmetic"></block>
      <block type="math_single"></block>
      <block type="math_trig"></block>
      <block type="math_constant"></block>
      <block type="math_number_property"></block>
      <block type="math_round"></block>
      <block type="math_on_list"></block>
      <block type="math_modulo"></block>
      <block type="math_constrain">
        <value name="LOW">
          <block type="math_number">
            <field name="NUM">1</field>
          </block>
        </value>
        <value name="HIGH">
          <block type="math_number">
            <field name="NUM">100</field>
          </block>
        </value>
      </block>
      <block type="math_random_int">
        <value name="FROM">
          <block type="math_number">
            <field name="NUM">1</field>
          </block>
        </value>
        <value name="TO">
          <block type="math_number">
            <field name="NUM">100</field>
          </block>
        </value>
      </block>
      <block type="math_random_float"></block>
    </category>
    <category name="Lists">
      <block type="lists_create_empty"></block>
      <block type="lists_create_with"></block>
      <block type="lists_repeat">
        <value name="NUM">
          <block type="math_number">
            <field name="NUM">5</field>
          </block>
        </value>
      </block>
      <block type="lists_length"></block>
      <block type="lists_isEmpty"></block>
      <block type="lists_indexOf"></block>
      <block type="lists_getIndex"></block>
      <block type="lists_setIndex"></block>
    </category>
    <category name="Variables" custom="VARIABLE"></category>
    <category name="Functions" custom="PROCEDURE"></category>
    <sep></sep>
    <category name="Library" expanded="true">
      <category name="Randomize">
        <block type="procedures_defnoreturn">
          <mutation>
            <arg name="list"></arg>
          </mutation>
          <field name="NAME">randomize</field>
          <statement name="STACK">
            <block type="controls_for" inline="true">
              <field name="VAR">x</field>
              <value name="FROM">
                <block type="math_number">
                  <field name="NUM">1</field>
                </block>
              </value>
              <value name="TO">
                <block type="lists_length" inline="false">
                  <value name="VALUE">
                    <block type="variables_get">
                      <field name="VAR">list</field>
                    </block>
                  </value>
                </block>
              </value>
              <value name="BY">
                <block type="math_number">
                  <field name="NUM">1</field>
                </block>
              </value>
              <statement name="DO">
                <block type="variables_set" inline="false">
                  <field name="VAR">y</field>
                  <value name="VALUE">
                    <block type="math_random_int" inline="true">
                      <value name="FROM">
                        <block type="math_number">
                          <field name="NUM">1</field>
                        </block>
                      </value>
                      <value name="TO">
                        <block type="lists_length" inline="false">
                          <value name="VALUE">
                            <block type="variables_get">
                              <field name="VAR">list</field>
                            </block>
                          </value>
                        </block>
                      </value>
                    </block>
                  </value>
                  <next>
                    <block type="variables_set" inline="false">
                      <field name="VAR">temp</field>
                      <value name="VALUE">
                        <block type="lists_getIndex" inline="true">
                          <mutation statement="false" at="true"></mutation>
                          <field name="MODE">GET</field>
                          <field name="WHERE">FROM_START</field>
                          <value name="AT">
                            <block type="variables_get">
                              <field name="VAR">y</field>
                            </block>
                          </value>
                          <value name="VALUE">
                            <block type="variables_get">
                              <field name="VAR">list</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <next>
                        <block type="lists_setIndex" inline="false">
                          <value name="AT">
                            <block type="variables_get">
                              <field name="VAR">y</field>
                            </block>
                          </value>
                          <value name="LIST">
                            <block type="variables_get">
                              <field name="VAR">list</field>
                            </block>
                          </value>
                          <value name="TO">
                            <block type="lists_getIndex" inline="true">
                              <mutation statement="false" at="true"></mutation>
                              <field name="MODE">GET</field>
                              <field name="WHERE">FROM_START</field>
                              <value name="AT">
                                <block type="variables_get">
                                  <field name="VAR">x</field>
                                </block>
                              </value>
                              <value name="VALUE">
                                <block type="variables_get">
                                  <field name="VAR">list</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <next>
                            <block type="lists_setIndex" inline="false">
                              <value name="AT">
                                <block type="variables_get">
                                  <field name="VAR">x</field>
                                </block>
                              </value>
                              <value name="LIST">
                                <block type="variables_get">
                                  <field name="VAR">list</field>
                                </block>
                              </value>
                              <value name="TO">
                                <block type="variables_get">
                                  <field name="VAR">temp</field>
                                </block>
                              </value>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
        </block>
      </category>
      <category name="Jabberwocky">
        <block type="text_print">
          <value name="TEXT">
            <block type="text">
              <field name="TEXT">'Twas brillig, and the slithy toves</field>
            </block>
          </value>
          <next>
            <block type="text_print">
              <value name="TEXT">
                <block type="text">
                  <field name="TEXT">  Did gyre and gimble in the wabe:</field>
                </block>
              </value>
              <next>
                <block type="text_print">
                  <value name="TEXT">
                    <block type="text">
                      <field name="TEXT">All mimsy were the borogroves,</field>
                    </block>
                  </value>
                  <next>
                    <block type="text_print">
                      <value name="TEXT">
                        <block type="text">
                          <field name="TEXT">  And the mome raths outgrabe.</field>
                        </block>
                      </value>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </next>
        </block>
        <block type="text_print">
          <value name="TEXT">
            <block type="text">
              <field name="TEXT">"Beware the Jabberwock, my son!</field>
            </block>
          </value>
          <next>
            <block type="text_print">
              <value name="TEXT">
                <block type="text">
                  <field name="TEXT">  The jaws that bite, the claws that catch!</field>
                </block>
              </value>
              <next>
                <block type="text_print">
                  <value name="TEXT">
                    <block type="text">
                      <field name="TEXT">Beware the Jubjub bird, and shun</field>
                    </block>
                  </value>
                  <next>
                    <block type="text_print">
                      <value name="TEXT">
                        <block type="text">
                          <field name="TEXT">  The frumious Bandersnatch!"</field>
                        </block>
                      </value>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </next>
        </block>
      </category>
    </category>
  </xml>

  <script>
    var workspace = Blockly.inject('blocklyDiv',
        {media: '../../media/',
         toolbox: document.getElementById('toolbox')});
  </script>

</body>
</html>
